#ifndef SEGIND_H_INCLUDED
#define SEGIND_H_INCLUDED

#include <stdint.h>
#include <avr/io.h>
#include <avr/pgmspace.h>

#include "symbol_table.h"

/** Hal layer */
#define IND_STROB_COUNT         4

#define IND_STROB0              (1 << 2)
#define IND_STROB1              (1 << 3)
#define IND_STROB2              (1 << 4)
#define IND_STROB3              (1 << 5)
#define IND_STROB_MASK          (IND_STROB0 | IND_STROB1 | IND_STROB2 | IND_STROB3)

#define IND_DDR                 DDRB
#define IND_PORT                PORTB
#define IND_STROB_DDR           DDRD
#define IND_STROB_PORT          PORTD

#define INIT_IND_PORT()         IND_DDR = 0xff; IND_PORT = 0
#define INIT_IND_STROB_PORT()   IND_STROB_DDR |= IND_STROB_MASK; IND_STROB_PORT &= ~(IND_STROB_MASK)
#define CLEAR_IND_STROBS()      IND_STROB_PORT &= ~IND_STROB_MASK

void init_ind();
void task_ind();
void put_byte(uint8_t b);
void put_word(uint16_t b);

#endif // SEGIND_H_INCLUDED
